﻿//#region File and License Information
///*
//<File>
//	<Copyright>Copyright © 2007, Daniel Vaughan. All rights reserved.</Copyright>
//	<License>
//		Redistribution and use in source and binary forms, with or without
//		modification, are permitted provided that the following conditions are met:
//			* Redistributions of source code must retain the above copyright
//			  notice, this list of conditions and the following disclaimer.
//			* Redistributions in binary form must reproduce the above copyright
//			  notice, this list of conditions and the following disclaimer in the
//			  documentation and/or other materials provided with the distribution.
//			* Neither the name of the <organization> nor the
//			  names of its contributors may be used to endorse or promote products
//			  derived from this software without specific prior written permission.
//
//		THIS SOFTWARE IS PROVIDED BY <copyright holder> ''AS IS'' AND ANY
//		EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
//		WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
//		DISCLAIMED. IN NO EVENT SHALL <copyright holder> BE LIABLE FOR ANY
//		DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
//		(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
//		LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
//		ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
//		(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
//		SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//	</License>
//	<Owner Name="Daniel Vaughan" Email="dbvaughan@gmail.com"/>
//	<CreationDate>2009-08-08 18:19:55Z</CreationDate>
//</File>
//*/
//#endregion
//
//using System;
//using System.ComponentModel;
//using System.Runtime.CompilerServices;
//
//using Microsoft.Practices.Unity;
//
//namespace DanielVaughan.Calcium
//{
//	/// <summary>
//	/// Helper class to resolve a Unity container 
//	/// that must be initialized once.
//	/// </summary>
//	public class ServiceLocatorSingleton
//	{
//		static IUnityContainer unityContainer;
//		static readonly object unityContainerLock = new object();
//
//		ServiceLocatorSingleton()
//		{
//		}
//        
//		/// <summary>
//		/// Gets the unity container that was attached 
//		/// when the ServiceLocatorSingleton was Initialized.
//		/// </summary>
//		/// <value>The global unity container.</value>
//		public static IUnityContainer Container
//		{
//			get
//			{
//				if (unityContainer == null)
//				{
//					lock (unityContainerLock)
//					{
//						if (unityContainer == null)
//						{
//							unityContainer = new UnityContainer();
//						}
//					}
//				}
//				return unityContainer;
//			}
//		}
//
//		/// <summary>
//		/// Initializes the specified global container.
//		/// Expects a configuration section called unity.
//		/// </summary>
//		/// <param name="globalContainer">The global container.</param>
//		/// <exception cref="InvalidOperationException">
//		/// Occurs if this method was previously called 
//		/// with a different <code>IUnityContainer</code> instance.</exception>
//		[EditorBrowsable(EditorBrowsableState.Never)]
//		[MethodImpl(MethodImplOptions.Synchronized)]
//		public static void Initialize(IUnityContainer globalContainer)
//		{
//			unityContainer = globalContainer;
//		}
//	}
//}
